import { Module, NestModule, MiddlewareConsumer, RequestMethod } from '@nestjs/common';
import { UserService } from './user.service';
import { LoggerMiddleware } from '../logger/logger.middleware';
import { UserController } from './user.controller';

@Module({
  providers: [UserService],
  exports: [UserService]            // 如果要成为共享模块，需要使用 exports 导出
})
// export class UserModule {}
export class UserModule implements NestModule {         // 使用中间件，需要实现 NestModule 接口及方法
    configure(consumer: MiddlewareConsumer) {
      // consumer.apply(LoggerMiddleware).forRoutes('user');    // 1、中间件的配置, 要匹配一个路由
      // consumer.apply(LoggerMiddleware).forRoutes({path: 'user', method: RequestMethod.POST});    // 2、指定路由拦截规则，当时 POST请求就被拦截
      consumer.apply(LoggerMiddleware).forRoutes(UserController);    //  3、拦截controller里的所有路由
    }
}   
